/*===============================================================================================
 Adion's BPM Detection Library Example
 Copyright (c), adionSoft 2007.
 See http://adionsoft.net/bpm for more information
===============================================================================================*/
#ifndef _BPM_DETECT_H_
#define _BPM_DETECT_H_

void*	__stdcall BPM_Create();
void	__stdcall BPM_Destroy(void *bpm);
void	__stdcall BPM_AddSample(void *bpm, float sample);
double	__stdcall BPM_getParameter(void *bpm, int param);
void	__stdcall BPM_setParameter(void *bpm, int param, double value);
double	__stdcall BPM_getFFTParameter(void *bpm, int param);
void	__stdcall BPM_setFFTParameter(void *bpm, int param, double value);
void	__stdcall BPM_Register(int code[10]);

signed short  __stdcall getShortIntFromArray(signed short *buffer, int pos);
signed short  __stdcall getFloatFromArray(signed short *buffer, int pos);

enum BPMPARAM
{
	BPMFOUNDBPM,
	BPMNROFBEATS,
	BPMBEATLOOP,
	BPMCURRENTBEATTIME,
	BPMRESET,
	BPMMETHOD_WAVELIST,
	BPMMETHOD_STRIPES,
    BPMRANGE_MINBPM,
    BPMRANGE_MAXBPM
};

enum BPMFFTPARAM
{
	BPMFFT_WINDOWSIZE,
	BPMFFT_NBWINDOWS,
	BPMFFT_WINDOWTYPE
};

#endif
